#include <iostream>
#include <string>
#include "structures.h"
#include "ConstrArbre2.h"
#include "RechPO.h"
#include "Bienvenue.h"

int Rech27(dico2* Racine,char *seq,char *chaine,int *nb)
{
	unsigned int j=0,aVinf=0,av=0;
	while(av<(strlen(chaine)))
	{
		
		j=convert_car(seq[av]);
		
		if((*Racine).fils[j]!=NULL)
		{
			aVinf=(*(*Racine).fils[j]).debut-1;
			while(aVinf-(*(*Racine).fils[j]).debut+1<(*(*Racine).fils[j]).taille  && av<strlen(seq)-2 && chaine[aVinf]==seq[av])
			{
				aVinf++;av++;
			}
			if ((*(*Racine).fils[j]).taille<=aVinf-(*(*Racine).fils[j]).debut+1)
			{
			Racine=(*Racine).fils[j];
			}
			else if(av>=(strlen(seq)-2) && av<strlen(chaine) && chaine[aVinf]==seq[av] )
			{
				*nb=occurence2((*Racine).fils[j]);
				return Poccurence((*Racine).fils[j]);
				
			}
			
			else
			{	
				return 0;
			}
		}
		else
		{
		
			return 0;
		}
		
	}
	if(av>strlen(seq)-2)
	{
		*nb=occurence2((*Racine).fils[j]);
		return Poccurence((*Racine).fils[j]);
	}
	else
		
	return 0;
}	
	

int Poccurence(dico2* racine)
{
	int a=0;
	for(int i=0;i<5;i++)
	{
	if((*racine).fils[i]!=NULL)
	{
		a=minimum(Poccurence((*racine).fils[i]),a);
	}
	}
	if(!a)
	{
			a=(*racine).DebutRacine;
		
	}	

		return a;


}

int minimum(int a, int b)
{
	if( a<b )
		return a;
	else
		return b;//renvoi le min de deux nombres
}
int occurence2(dico2* racine)
{
	int a=0;
	for(int i=0;i<5;i++)
	{
	if((*racine).fils[i]!=NULL)
	{
		a=occurence2((*racine).fils[i])+a;//On compte les feuilles
	}
	}
	if(!a)
		return 1;
	else
		return a;


}
